<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Maintain extends CI_Controller {
    var $message="";
//  echo "获取页面传来的参数";
//  $type = $_GET['type'];
//  $proId = $_GET['id'];
//  echo $type."产品type";
//  echo $proId."产品Id";
//  // 从文件中读取数据到PHP变量 
//  $json_string = file_get_contents('json/data.json'); 

private function insertdb($title,$comment,$parent){
    $newnode_sort = floor((microtime(true) - 1400000000));
    $this->load->database();
    $data = array(
        'title' => $title,
        // 'parent' => $this->db->escape($_REQUEST['parent']),如果用escap的话，插入到表的字符串会被加上引号
        'parent' => $parent,
        'comment' => $comment,
        'sort' => $newnode_sort,
        'in_date' => date("Y-m-d H:m:s"),
        // 'uid' => $this->_login_userid
        'uid' => 2,
        'pub' => 1,//设置为公开
        'nodetype' => 'Z'//设置为知识库类型
    );
    $this->db->insert('task', $data);

    if ($this->db->affected_rows() > 0) {
        $status = 1;
        $newid = $this->db->insert_id();
        return $newid;
    } else {
        $status = 0;
        return 0;
    }
}

private function foreachfun($a,$p){
    $b = array_reverse($a);
    // print_r($b);
    foreach($b as $key => $item){
        // echo $item['title'];
        // echo $item['comment'];
        $newid = $this->insertdb($item['title'],$item['comment'],$p);
        printf("成功插入：%s,%s\n",$newid,$item['title']);
        if (array_key_exists('child', $item)){
            // if (is_array ($item['child'])){
                $this->foreachfun($item['child'],$newid);
            // }
        }else{
            
        }

    }
}


//arr是一个完整的含有根节点的json数组

private function foreachInsert($arr,$pid){
    if (array_key_exists('title', $arr)){
        $newid = $this->insertdb($arr['title'],$arr['comment'],$pid);
        $this->message .= sprintf("成功插入：%s,%s\n",$newid,$arr['title']);
        $pid = $newid;
    }
    if (array_key_exists('child', $arr)){
        $childs = $arr['child'];
        // $childs = array_reverse($arr['child']);
        foreach($childs as $key => $item){
            $this->foreachInsert($item,$pid);
        }
    }else{
        
    }
}

   
 var $json_string = '
 {
    "child": [
        {
            "title": "第一章\t总则",
            "comment": "",
            "child": [
                {
                    "title": "第一条",
                    "comment": "为了保护和改善生态环境，防治固体废物污染环境，保障公众健康，维护生态安全，推进生态文明建设，促进经济社会可持续发展，制定本法。"
                },
                {
                    "title": "第二条",
                    "comment": "固体废物污染环境的防治适用本法。\r\n固体废物污染海洋环境的防治和放射性固体废物污染环境的防治不适用本法。"
                },
                {
                    "title": "第三条",
                    "comment": "国家推行绿色发展方式，促进清洁生产和循环经济发展。\r\n国家倡导简约适度、绿色低碳的生活方式，引导公众积极参与固体废物污染环境防治。"
                },
                {
                    "title": "第四条",
                    "comment": "固体废物污染环境防治坚持减量化、资源化和无害化的原则。\r\n任何单位和个人都应当采取措施，减少固体废物的产生量，促进固体废物的综合利用，降低固体废物的危害性。"
                },
                {
                    "title": "第五条",
                    "comment": "固体废物污染环境防治坚持污染担责的原则。\r\n产生、收集、贮存、运输、利用、处置固体废物的单位和个人，应当采取措施，防止或者减少固体废物对环境的污染，对所造成的环境污染依法承担责任。"
                },
                {
                    "title": "第六条",
                    "comment": "国家推行生活垃圾分类制度。\r\n生活垃圾分类坚持政府推动、全民参与、城乡统筹、因地制宜、简便易行的原则。"
                },
                {
                    "title": "第七条",
                    "comment": "地方各级人民政府对本行政区域固体废物污染环境防治负责。\r\n国家实行固体废物污染环境防治目标责任制和考核评价制度，将固体废物污染环境防治目标完成情况纳入考核评价的内容。"
                },
                {
                    "title": "第八条",
                    "comment": "各级人民政府应当加强对固体废物污染环境防治工作的领导，组织、协调、督促有关部门依法履行固体废物污染环境防治监督管理职责。\r\n省、自治区、直辖市之间可以协商建立跨行政区域固体废物污染环境的联防联控机制，统筹规划制定、设施建设、固体废物转移等工作。"
                },
                {
                    "title": "第九条",
                    "comment": "国务院生态环境主管部门对全国固体废物污染环境防治工作实施统一监督管理。国务院发展改革、工业和信息化、自然资源、住房城乡建设、交通运输、农业农村、商务、卫生健康、海关等主管部门在各自职责范围内负责固体废物污染环境防治的监督管理工作。\r\n地方人民政府生态环境主管部门对本行政区域固体废物污染环境防治工作实施统一监督管理。地方人民政府发展改革、工业和信息化、自然资源、住房城乡建设、交通运输、农业农村、商务、卫生健康等主管部门在各自职责范围内负责固体废物污染环境防治的监督管理工作。"
                },
                {
                    "title": "第十条",
                    "comment": "国家鼓励、支持固体废物污染环境防治的科学研究、技术开发、先进技术推广和科学普及，加强固体废物污染环境防治科技支撑。"
                },
                {
                    "title": "第十一条",
                    "comment": "国家机关、社会团体、企业事业单位、基层群众性自治组织和新闻媒体应当加强固体废物污染环境防治宣传教育和科学普及，增强公众固体废物污染环境防治意识。\r\n学校应当开展生活垃圾分类以及其他固体废物污染环境防治知识普及和教育。"
                },
                {
                    "title": "第十二条",
                    "comment": "各级人民政府对在固体废物污染环境防治工作以及相关的综合利用活动中做出显著成绩的单位和个人，按照国家有关规定给予表彰、奖励。"
                }
            ]
        },
        {
            "title": "第九章\t附则",
            "comment": "",
            "child": [
                {
                    "title": "第一百二十四条",
                    "comment": "本法下列用语的含义：\r\n（一）固体废物，是指在生产、生活和其他活动中产生的丧失原有利用价值或者虽未丧失利用价值但被抛弃或者放弃的固态、半固态和置于容器中的气态的物品、物质以及法律、行政法规规定纳入固体废物管理的物品、物质。经无害化加工处理，并且符合强制性国家产品质量标准，不会危害公众健康和生态安全，或者根据固体废物鉴别标准和鉴别程序认定为不属于固体废物的除外。\r\n（二）工业固体废物，是指在工业生产活动中产生的固体废物。\r\n（三）生活垃圾，是指在日常生活中或者为日常生活提供服务的活动中产生的固体废物，以及法律、行政法规规定视为生活垃圾的固体废物。\r\n（四）建筑垃圾，是指建设单位、施工单位新建、改建、扩建和拆除各类建筑物、构筑物、管网等，以及居民装饰装修房屋过程中产生的弃土、弃料和其他固体废物。\r\n（五）农业固体废物，是指在农业生产活动中产生的固体废物。\r\n（六）危险废物，是指列入国家危险废物名录或者根据国家规定的危险废物鉴别标准和鉴别方法认定的具有危险特性的固体废物。\r\n（七）贮存，是指将固体废物临时置于特定设施或者场所中的活动。\r\n（八）利用，是指从固体废物中提取物质作为原材料或者燃料的活动。\r\n（九）处置，是指将固体废物焚烧和用其他改变固体废物的物理、化学、生物特性的方法，达到减少已产生的固体废物数量、缩小固体废物体积、减少或者消除其危险成分的活动，或者将固体废物最终置于符合环境保护规定要求的填埋场的活动。"
                },
                {
                    "title": "第一百二十五条",
                    "comment": "液态废物的污染防治，适用本法；但是，排入水体的废水的污染防治适用有关法律，不适用本法。"
                },
                {
                    "title": "第一百二十六条",
                    "comment": "本法自2020年9月1日起施行。"
                }
            ]
        }
    ]
}
';

    public function json2db($parent)
    {
        // 用参数true把JSON字符串强制转成PHP数组 
        $array = json_decode($json_string, true);

        // 显示出来看看 
        //  var_dump($json_string); 
        //  var_dump ($data); 
        // print_r($data);
        $this->foreachfun($array['child'], $parent);
    }

    public function json_input_form()
    {
        $this->load->view('maintain/fatiao_json_input');
    }

    public function post_json_insert_db(){
        $json_str = $_REQUEST['taskJson'];
        $parent = $_REQUEST['parent'];
        $array = json_decode($json_str, true);

        // 显示出来看看 
        //  var_dump($json_str); 
        //  var_dump ($array); 
        // print_r($data);
        // $this->foreachfun($array['child'], $parent);
        if($array){
            $this->foreachInsert($array, $parent);
            $status = 'success';
            $result_arr = array(
                'status' => $status,
                'message' => $this->message,
                'data' => array(
                )
            );
        }else{
            $status = "error";
            $result_arr = array(
                'status' => $status,
                'message' => "无法识别的格式！\n\r".$this->message,
                'data' => array(
                )
            );
        }
		$json_string = json_encode($result_arr);
		echo $json_string;
    }
}
?>